<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Alojamiento_lst( $this );

	class Alojamiento_lst extends Lst
	{
	function Alojamiento_lst( &$oModule )
		{
			$this->Lst( $oModule );
			// Crea el Objeto Domicilio
				$oModAdministracion =& loadModule( 'administracion' );
				$oModAdministracion->setSubModule( 'entidades' );
				$this->oDomicilio = $oModAdministracion->loadClass( 'Domicilio_frm' );
		}

	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
					$this->aShowColumns = array( 'Nombre' );
					break;
				case 'L':
					$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Nombre', 'Domicilio', 'Telefono', 'Modif' );
					break;
			}
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Alojamiento_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			
			$this->aFields['aRotulo'] = is_array( getParam( 'aRotulo' ) )  ? implode(",", getParam( 'aRotulo' ) ): getParam( 'aRotulo' );
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ESTRELLA_ESTABLECIMIENTO, 'ncEstablecimiento', 'bEstrella' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_ESTABLECIMIENTOS, 'ncEstablecimiento', 'gtEstablecimientoRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM gtRotuloEstablecimiento' ) );
			$this->addColumnAction ( 'Nombre', VER_ESTABLECIMIENTO, 'ncEstablecimiento', 'cdEstablecimiento' );
			$this->addColumn    ( 'Domicilio', '' );
			$this->addColumn    ( 'Ubicacion', '' );
			$this->addColumn ( 'Telefono' );
			$this->addColumnDate ( 'Modif', 'dModificacion', 'dModificacion' );
			$this->addColumnLink ( 'Web', 'cPaginaWeb' );
			$this->addColumn ( 'Telefono', '' );
			$this->addColumn ( 'Direccion', '' );
			$this->addColumn ( 'Altura', '' );
			$this->addColumn ( 'Email', 'cEmail' );
			$this->addColumn ( 'Categoria', '' );
			$this->addColumn ( 'Servicios', '' );
			$oTab =& $this->setIndex( INDEX_USER, TAB_TOP, 'ncCategoriaEstablecimiento' , true);
			$cSql = "SELECT ncCategoriaEstablecimiento, cdCategoriaEstablecimiento FROM gcCategoriaEstablecimiento WHERE ncFuncion = 24";
			$oTab->setMatrix( $this->oDatabase->getMatrix($cSql) );
			$this->setTitle ( "Alojamiento" );
			$this->setSummary( "Esta tabla contiene el listado de Alojamientos" );
			$this->addColumn ( 'Nombre', 'cdAlojamiento', true );
		}
	function query()
		{
			// Convierte a variables el aFields
				extract( $this->getFieldArray() );
			// Si filtra por Ubicacion toma algunos datos
				if ( $ncUbicacion  )
				{
					list($ncPais, $ncUbicacion ) = explode('|', $ncUbicacion );
					$cCamino = $this->oModule->oDatabase->getData( "SELECT cCamino FROM acUbicacion WHERE ncPais = $ncPais AND ncUbicacion = $ncUbicacion" );
				}
			// Arma el Query
				$cSql = "SELECT Est.ncEstablecimiento, Est.dModificacion, Est.cdEstablecimiento, Est.ncDomicilio, Est.bBaja, Est.bEstrella , Est.cPaginaWeb, Est.cEmail, Est.cHorarios
							FROM gtEstablecimiento as Est
							JOIN gtAlojamiento as Alo
								ON Alo.ncEstablecimiento = Est.ncEstablecimiento";
				$cSql .= armarJoin ( " JOIN atDomicilio AS Dom
										ON Dom.ncDomicilio = Est.ncDomicilio
										AND Dom.ncPais = $ncPais
                                      JOIN acUbicacion as Ubi
										ON Ubi.ncUbicacion = Dom.ncUbicacion
										AND Ubi.ncPais= Dom.ncPais
										AND cCamino LIKE '$cCamino%'" , $ncPais );
				$cSql .= armarJoin ( " JOIN atDomicilioUrbano as DUr
										ON DUr.ncDomicilio = Est.ncDomicilio
										AND cCalle LIKE '%$cCalle%'" , $cCalle );
				$cSql .= armarJoin (" JOIN gtEstablecimientoRotulo as ERo ON ERo.ncEstablecimiento = Est.ncEstablecimiento AND ERo.ncRotulo IN ( $aRotulo  ) " , $aRotulo );
				$cSql .= armarJoin ( " JOIN gtEstablecimientoFuncion  as EAc ON EAc.ncEstablecimiento = Est.ncEstablecimiento AND EAc.ncFuncion = $ncFuncion", $ncFuncion);
				$cSql .= armarJoin ( " JOIN gtEstablecimientoServicio as ESe ON ESe.ncEstablecimiento = Est.ncEstablecimiento AND ESe.ncServicio = $ncServicio", $ncServicio);
			// Arma el Filtro de la Consulta
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray() );
				$this->oWhere->addKey ( $this->oDatabase->dbConcat( "' '", "Est.cdEstablecimiento" ), $cKeyLookUp );
			return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_ALOJAMIENTO, $cParametroRegistro, 'I' );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro = "ncEstablecimiento=" . $aRow["ncEstablecimiento"];
			$this->addRowAction ( MODIFICAR_UN_ESTABLECIMIENTO, $cParametroRegistro , '', VENTANA_SECUNDARIA );
			$this->addRowAction ( ELIMINAR_ALOJAMIENTO ,  $cParametroRegistro );
		}
	}
?>